Registrace ActionListu frejmu k formu

Otázka od: Petr Kuklik

23. 9. 2004 8:55

Dobry den,
  reviduji ve sve aplikaci praci s ShortCut v ActionListech. Chtel jsem
dosahnout toho aby mel prednost ActionList toho frejmu, ktery ma fokus (jeho
nektera komponenta). Jak jsem zjistil, tak pri prirazeni parenta frejmu, si
frejm registruje u nejblizsiho (GetparentForm) formu svoje actionlisty. Na co
jsem ale narazil je to, ze kdyz mam frejm, nazveme ho FrejmHlavni, a na nem
jinej frejm (FrejmDalsi) a vytvarim FrejmHlavni za behu, tak se zaregistruji
pouze actionlisty frejmuHlavni. Je to proto, ze pri vytvareni FrejmHlavni se
vytvari i FrejmDalsi, jemu se FrejmHlavni nastavi jako parent, ale v tuto
chvili jeste FrejmHlavni nema Parenta a tak FrejmDalsi nenajde vhodny form. Po
naslednem prirazeni parenta frejmuHlavni jiz FrejmDalsi nic neprovadi.
  Neresil jste nekdo tuto situaci? A pokud ano, mate nejakou rozumnou metodu,
jak tento nedostatek odstranit?

Diky Petr Kuklik


Odpovedá: Ondrej Kelle

23. 9. 2004 10:41

> reviduji ve sve aplikaci praci s ShortCut v ActionListech.
> Chtel jsem dosahnout toho aby mel prednost ActionList toho
> frejmu, ktery ma fokus (jeho nektera komponenta). Jak jsem
> zjistil, tak pri prirazeni parenta frejmu, si frejm
> registruje u nejblizsiho (GetparentForm) formu svoje
> actionlisty. Na co jsem ale narazil je to, ze kdyz mam frejm,
> nazveme ho FrejmHlavni, a na nem jinej frejm (FrejmDalsi) a
> vytvarim FrejmHlavni za behu, tak se zaregistruji pouze
> actionlisty frejmuHlavni. Je to proto, ze pri vytvareni
> FrejmHlavni se vytvari i FrejmDalsi, jemu se FrejmHlavni
> nastavi jako parent, ale v tuto chvili jeste FrejmHlavni nema
> Parenta a tak FrejmDalsi nenajde vhodny form. Po naslednem
> prirazeni parenta frejmuHlavni jiz FrejmDalsi nic neprovadi.
> Neresil jste nekdo tuto situaci? A pokud ano, mate nejakou
> rozumnou metodu, jak tento nedostatek odstranit?

Podla zdrojaku by mohlo stacit vo chvili, ked uz je FrejmHlavni na
formulari, znovu priradit toho isteho parenta:

FrejmDalsi.Parent := FrejmHlavni;

Da sa to napisat aj vseobecne, prejdes si vsetky Controls hlavneho framu a
ak je to frame tak rekurzivne aj jeho controls, atd. a kazdemu jednoducho
priradis Frame.Parent := Frame.Parent;

Neskusal som to.

HTH
TOndrej